package com.swyc.osschat.Test.StreamTest.Controller.Stream;

import lombok.extern.slf4j.Slf4j;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @description 寻找文件并且重命名
 * @Author: z156940l@outlook.com
 * @className FileFindAndRename
 * @Date: 2022/5/10 16:32
 */
@Slf4j
public class FileFindAndRename {

    public static void main(String[] args) {
        String filePath = "E://学习//课程";
        String newFileNameBegin = "【黑莲资源论坛bbs.hl1.net】";
        replaceFileWord(filePath, newFileNameBegin);
    }


    /**
     * 批量修改一个目录文档下的文件名
     * @param filePath              E://高清壁纸
     * @param newFileNameBegin      高清壁纸
     * @param suffix                .jpg
     */
    public static void batchModifyFileName(String filePath, String newFileNameBegin, String suffix){
        File baseDir = new File(filePath);
        if (!baseDir.exists() || !baseDir.isDirectory()){
            log.info("文件查找失败：[{}]不是一个目录！", filePath);
            return;
        }
        String[] fileList = baseDir.list();
        for (int i = 1; i <= fileList.length; i++) {
            File oldFile = new File(filePath + "//" + fileList[i-1]);
            File newFile = new File(filePath + "//" + newFileNameBegin + i + suffix);
            oldFile.renameTo(newFile);
        }
    }

    /**
     * 查找一个文件夹里面所有的文件
     * @param filePath      E://学习//课程
     * @param replace       【黑莲资源论坛bbs.hl1.net】
     */
    public static void replaceFileWord(String filePath, String replace){
        File baseDir = new File(filePath);
        if (!baseDir.exists() || !baseDir.isDirectory()){
            log.info("文件查找失败：[{}]不是一个目录！", filePath);
            return;
        }
        String[] fileNames = baseDir.list();
        if (fileNames.length == 0){
            log.info("文件查找失败：[{}]是一个空文件夹。！", filePath);
            return;
        }
        List<String> fileList = Arrays.asList(fileNames);
        for (String fileName : fileList) {
            String oldFilePatch = filePath + "//" + fileName;
            File oldFile = new File(oldFilePatch);
            if (oldFile.isDirectory()){
                replaceFileWord(oldFilePatch, replace);
            }
            if (fileName.contains(replace)){
                String newFileName = fileName.replace(replace, "");
                File newFile = new File(filePath + "//" + newFileName);
                oldFile.renameTo(newFile);
            }
        }
    }
}
